跳到主要内容

MyBatisPlus 的 ORM 操作

什么是 Active Record ?

Active Record 是一种数据访问设计模式,它可以帮助你实现数据对象 Object 到关系数据库的映射。在 Active Record 模式中,对象中既有持久存储的数据,也有针对数据的操作。Active Record 模式把数据存取逻辑作为对象的一部分,处理对象的用户知道如何把数据写入数据库,以及从数据库中读出数据。

说白了就是 ORM

Active Record 的主要思想是:

  • 每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录;通常表的每一个字段在类中都有相应的 Field
  • Active Record 同时负责把自己持久化,在 Active Record 中封装了对数据库的访问(CURD)
  • Active Record 是一种领域模型(Domain Model)

查询数据

在 MP 中使用 AR 非常简单,只需让实体对象继承 Model<T> 就行了

@Data
public class User extends Model<User> {
// 设置 id 为自增长
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
}

然后就能直接使用这个 AR 进行操作表了

@Test
void testSelectById() {
User byId = new User();
byId.setId(2L);

// 现在就能直接取得 id=2 的对象了
User user1 = byId.selectById();
log.info(user1.toString());
}

注意:这个底层还是使用的上面的那个 BaseMapper

public interface UserMapper extends BaseMapper<User> {
}

根据条件查询

@Test
void testSelect() {
User user = new User();
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.gt("age", 25);
List<User> users = user.selectList(wrapper);
}

新增数据

@Test
void testInsertUser() {
User user = new User();
user.setName("李四");
user.setAge(30);
user.setEmail("890@gmail.com");
boolean insert = user.insert();
log.info("是否插入成功:{}" ,insert);
}

修改数据

@Test
void testUpdateUser() {
User user = new User();
user.setAge(30);
user.setId(2L);
boolean update = user.updateById();
log.info("是否修改成功:{}" ,update);
}

删除数据

@Test
void testUpdateUser() {
User user = new User();
user.setId(2L);
boolean delete = user.deleteById();
log.info("是否删除成功:{}" ,delete);
}